## The Hadamard matrices H^(n)

from PyM import *

def hadamard_matrix_recursive(n):
    if n==0: return matrix([[1]])
    if n > 0: 
        H = hadamard_matrix(n-1)
        k = nrows(H)
        H1 = matrix(Z_,k,k)
        for i in range(k):
            for j in range(k):
                H1[i,j] = - (H[i,j])
        return stack(splice(H,H), splice(H,H1))
        
H1 = hadamard_matrix_recursive(1)
H2 = hadamard_matrix_recursive(2)
H3 = hadamard_matrix_recursive(3)
H4 = hadamard_matrix_recursive(4)
H5 = hadamard_matrix_recursive(5)

show(H1)

show(H2)

show(det(H3))

show(det(H4),(2**4)**(2**3))

show((2**5)**(2**4))
show(det(H5))  
